package com.hjm.project.merchantInfo.merchantInfo.service;

import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSONObject;
import com.hjm.framework.web.domain.AjaxResult;
import com.hjm.project.merchantInfo.merRecord.domain.MerUpdateAreaRecord;
import com.hjm.project.merchantInfo.merchantInfo.domain.MerchantInfo;
import com.hjm.project.merchantInfo.merchantInfo.domain.MerchantRateShow;
import com.hjm.project.merchantInfo.merchantInfo.domain.MerchantShow;

import javax.servlet.http.HttpServletRequest;

/**
 * 商户信息Service接口
 *
 * @author LOVE
 * @date 2020-11-23
 */
public interface IMerchantInfoService
{
    /**
     * 查询商户信息
     *
     * @param merno 商户信息ID
     * @return 商户信息
     */
    public MerchantInfo selectMerchantInfoById(String merno);

    /**
     * 查询商户信息列表
     *
     * @param merchantInfo 商户信息
     * @return 商户信息集合
     */
    public List<MerchantInfo> selectMerchantInfoList(MerchantInfo merchantInfo);


    public List<Map> selectMerchantInfoList1(MerchantInfo merchantInfo);

    public int updateMerchantSync(String ldMerNo);


    /**
     * 数据管理-商户查询
     *
     * @param merchantInfo 商户信息
     * @return 商户信息集合
     */
    public List<MerchantInfo> selectDataMerInfoList(MerchantInfo merchantInfo);

    /**
     * 新增商户信息
     *
     * @param merchantInfo 商户信息
     * @return 结果
     */
    public int insertMerchantInfo(MerchantInfo merchantInfo);

    /**
     * 修改商户信息
     *
     * @param merchantInfo 商户信息
     * @return 结果
     */
    public int updateMerchantInfo(MerchantInfo merchantInfo);

    /**
     * 批量删除商户信息
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteMerchantInfoByIds(String ids);

    /**
     * 删除商户信息信息
     *
     * @param merno 商户信息ID
     * @return 结果
     */
    public int deleteMerchantInfoById(String merno);

    /**
     * 注销商户
     *
     * @param merchantInfo
     * @return
     */
    public AjaxResult saveCancel(MerchantInfo merchantInfo);

    /**
     * 修改商户地址
     *
     * @param merchantInfo
     * @param params
     * @return
     */
    public AjaxResult updateAddress(MerchantInfo merchantInfo, Map<String,String> params) throws Exception;

    /**
     * 修改商户结算账户
     * @param params
     * @return
     */
    public AjaxResult updateBank(Map<String,String> params);

    /**
     * 修改结算类型
     * @param merchantInfo
     * @return
     */
    public AjaxResult updateSettle(MerchantInfo merchantInfo);
    /**
     * 查询商户信息
     *
     * @param merno
     * @return
     * @throws Exception
     */
    public Map findMerchantInfoByMerNo(String merno)throws Exception;
    public List<MerchantInfo> findMerchantInfoByMerNo(MerchantInfo merchantInfo)throws Exception;
    /**
     * 查询商户费率
     * @param merno
     * @return
     */
    public List<Map<String, Object>> getMerchantRate(String merno) ;
    /**
     *
     * @Param [merNo 要迁移的商户编号, agentNum 要迁移的代理商编号]
     * @Return int
     */
    public AjaxResult merMigrateUpdate(String merNo,String agentNum) ;

    /**
     * 验证当前代理商是佛展业端管理商户
     * @Param [agentNum]
     * @Return int
     */
    public void valiIsCkMer(String agentNum) ;


    /**
     * 商户增机
     * @Param [param]
     * @Return int
     */
    public int merReplacePos(Map<String, String> param) throws Exception;
    /**
     * 商户换机GB
     * @Param [param]
     * @Return int
     */
    public int merReplacePosGB(Map<String, String> param) throws Exception;

    /**
     * 处理接口库 pos_key表中的数据
     * @Param [param]
     * @Return int
     */
    public void manageJkPosKeyInfo(Map<String, String> param) throws Exception;

    /**
     * 处理接口库 pos_key表中的GB数据
     * @Param [param]
     * @Return int
     */
    public void manageJkPosKeyInfoGB(Map<String, String> param) throws Exception;

    MerchantShow getMerchantInfo(String merno) throws Exception;

    MerchantShow getMerchantInfoShow(String merno);

    List<MerchantRateShow> getMerchantRateShow(String merno);

    AjaxResult getMerNewchantRate(String merno, String apply_id) throws Exception;

    /**
     * 同步重庆商户信息
     * @Param [body]
     * @Return com.hjm.framework.web.domain.AjaxResult
     */
    AjaxResult syncMerInfo(JSONObject body);


    Map<String,String> syncMerInfoJob(JSONObject body);


    /**
     *
     * @Param [merNo 要迁移的商户编号, agentNum 要迁移的代理商编号]
     * @Return int
     */
    public AjaxResult newMerMigrateUpdate(String merNo,String agentNum,String reachAgentNum,String actAgentNum,String flowAgentNum) ;



    AjaxResult updateMerMes(Map<String, String> params,String merno, HttpServletRequest request, String createName) throws Exception;

    List<MerUpdateAreaRecord> selectMerUpdateAreaRecordList(MerUpdateAreaRecord merUpdateAreaRecord);

    public List<Map<String,Object>> allProblemList(Map param)throws Exception;

    public Map<String,Object> updateProblemStatus(String merno, Integer status, Integer type, Integer mer_status)throws Exception;

    public int updateMerForProblem(String merno);

    public AjaxResult updateMerStr(String merno) throws Exception;

    AjaxResult syncQcfMerInfo(JSONObject body);

}
